home *** CD-ROM | disk | FTP | other *** search
Text File | 1998-10-11 | 5.1 KB | 234 lines | [TEXT/CWIE] |
- // CButtons.cp -- window methods
-
- #include "CButtons.h"
-
- #include <UEnvironment.h>
- #include <UReanimator.h>
- #include <URegistrar.h>
- #include <LStream.h>
- #include <LTabGroup.h>
- #include <LStaticText.h>
- #include <LAMStaticTextImp.h>
- #include <LGAStaticTextImp.h>
- #include <CInvisibleButton.h>
- #include <LPushButton.h>
- #include <LAMPushButtonImp.h>
- #include <LGAPushButtonImp.h>
- #include <LBevelButton.h>
- #include <LAMBevelButtonImp.h>
- #include <LGABevelButtonImp.h>
- #include <LDisclosureTriangle.h>
- #include <LAMControlImp.h>
- #include <LGADisclosureTriangleImp.h>
- #include <CustomControls.h>
- #include <LToggleButton.h>
- #include <LTextGroupBox.h>
- #include <LAMControlViewImp.h>
- #include <LGATextGroupBoxImp.h>
- #include <LRadioGroupView.h>
- #include <LRadioButton.h>
- #include <LGARadioButtonImp.h>
- #include <CTextUtils.h>
-
- #include "DDocData.h"
- #include "GadgetsCmds.h"
-
- const MessageT msgXx = 'Xx ';
- const MessageT msgLeftRight = 'Left';
-
- #define PPob_ButtonsID 201
- #define RidL_ButtonsID 201
-
- Boolean CButtons::sIsRegistered = false;
-
- //----------
- CButtons* CButtons::CreateButtons (
- LCommander* inSuperCommander,
- DDocData* inData)
- {
- if (!sIsRegistered) {
- RegisterClass ();
- }
-
- CButtons* window;
- window = (CButtons *)LWindow::CreateWindow(PPob_ButtonsID, inSuperCommander);
- window->ConnectToData (inData);
- return window;
- }
-
- //----------
- #define RegisterClasses(AbstractClass,AMImpClass,GAImpClass) \
- RegisterClass_(AbstractClass); \
- if (useAppearance) { \
- RegisterClassID_(AMImpClass, AbstractClass::imp_class_ID); \
- } else { \
- RegisterClassID_(GAImpClass, AbstractClass::imp_class_ID); \
- }
-
- //----------
- void CButtons::RegisterClass ()
- {
- Boolean useAppearance = UEnvironment::HasFeature (env_HasAppearance);
-
- RegisterClass_(CButtons);
-
- // register the pane classes we use
- RegisterClasses (LStaticText, LAMStaticTextImp, LGAStaticTextImp);
- RegisterClass_(CInvisibleButton);
- RegisterClasses (LPushButton, LAMPushButtonImp, LGAPushButtonImp);
- RegisterClasses (LBevelButton, LAMBevelButtonImp, LGABevelButtonImp);
- RegisterClasses (LDisclosureTriangle, LAMControlImp, LGADisclosureTriangleImp);
- RegisterClasses (CPushButton, CustomControlImp, CustomControlImp);
- RegisterClass_(LToggleButton);
- RegisterClasses (LTextGroupBox, LAMControlViewImp, LGATextGroupBoxImp);
- RegisterClass_(LRadioGroupView);
- RegisterClasses (LRadioButton, LAMControlImp, LGARadioButtonImp);
-
- sIsRegistered = true;
- }
-
- //----------
- CButtons::CButtons (
- LStream* inStream)
- : LWindow (inStream)
- {
- }
-
- //----------
- CButtons::~CButtons ()
- {
- }
-
- //----------
- // This member function gets called once the containment hierarchy that contains
- // this pane has been built. It gives us a chance to get data members for
- // interesting subviews, and to do other operations now that our subviews exist.
- void CButtons::FinishCreateSelf ()
- {
- mInvisibleButton = (CInvisibleButton*) FindPaneByID ('Inve');
-
- mStandardButton = (LPushButton*) FindPaneByID ('Stad');
-
- mRightIconButton = (LPushButton*) FindPaneByID ('Rign');
-
- mBevelButton = (LBevelButton*) FindPaneByID ('Bevl');
-
- mXxCheck = (LDisclosureTriangle*) FindPaneByID ('Xx ');
-
- mLightButton = (CPushButton*) FindPaneByID ('Ligt');
-
- mLeftRightCheck = (LToggleButton*) FindPaneByID ('Left');
-
- mRadiosGroup = (LRadioGroupView*) FindPaneByID ('Rads');
-
- mRadioButtonRadio = (LBevelButton*) FindPaneByID ('Radn');
-
- mRadioButton2Radio = (LBevelButton*) FindPaneByID ('Rad2');
-
-
- UReanimator::LinkListenerToControls(this, this, RidL_ButtonsID);
- // "connect" self to our controls that we want to "listen" to
-
- // any additional initialization for your window:
- }
-
- //----------
- void CButtons::ConnectToData (
- DDocData* inData)
- {
- mData = inData;
- mData->AddListener (this);
-
- mXxCheck->SetValue (mData->GetTriangle ());
- mLeftRightCheck->SetValue (mData->GetLeftRight ());
- mRadiosGroup->SetValue (mData->GetRadios ());
- }
-
- //----------
- void CButtons::DataChanged (
- long inDataID)
- {
- StopListening ();
-
- if (inDataID == idTriangle) {
- mXxCheck->SetValue (mData->GetTriangle ());
- }
- if (inDataID == idLeftRight) {
- mLeftRightCheck->SetValue (mData->GetLeftRight ());
- }
- if (inDataID == idRadios) {
- mRadiosGroup->SetValue (mData->GetRadios ());
- }
-
- StartListening ();
- }
-
- //----------
- void CButtons::ListenToMessage (
- MessageT inMessage,
- void* ioParam)
- {
- switch (inMessage) {
- case msgDataChanged:
- DataChanged ((long)ioParam);
- break;
-
- case msgXx:
- mData->SetTriangle (mXxCheck->GetValue ());
- break;
-
- case msgLeftRight:
- mData->SetLeftRight (mLeftRightCheck->GetValue ());
- break;
-
- default:
- ; // do something
- break;
- }
- }
-
- //----------
- Boolean CButtons::ObeyCommand (
- CommandT inCommand,
- void* ioParam)
- {
- Boolean cmdHandled = true;
-
- if (inCommand < 0) {
- // modal dialog has finished
-
- switch (-inCommand) {
- }
-
- } else {
- switch (inCommand) {
-
- default:
- cmdHandled = LWindow::ObeyCommand(inCommand, ioParam);
- break;
- }
- }
-
- return cmdHandled;
- }
-
- //----------
- void CButtons::FindCommandStatus (
- CommandT inCommand,
- Boolean &outEnabled,
- Boolean &outUsesMark,
- Char16 &outMark,
- Str255 outName)
- {
- outUsesMark = false;
-
- switch (inCommand) {
-
-
- default:
- LWindow::FindCommandStatus(inCommand, outEnabled,
- outUsesMark, outMark, outName);
- break;
- }
- }
-